#ifndef _PY_H_
#define _PY_H_

typedef struct
{
	char sm_char;	//声母字符，ch，zh,sh特殊处理
	unsigned char map_val;	//映射值
	short max_len;	//该声母对于最长的长度
	short start;	//在所有拼音中索引起始位置
	short end;		//在所有拼音中索引结束位置
}sm_t;//声母结构

typedef struct
{
	char py_str[6+1];	//拼音串列表
//	char next;			//拼音最后一位与零声母的关系,hengan能被解析为hen'gan(该位为0),hongan则不能解析为hon'gan(为1)
	short map_val;		//映射表,高位为声母,地位为韵母.
	unsigned char check;//是否为纠错位,1为是,0为否
	unsigned char flag;	//声母是否为ch,zh或者sh,1为是,0为否.
}py_t;//所有合法的拼音结构和映射值

/*
*	一个合法完整的基本输入单位由6部分组成,分别为:声母(半可选)+韵母(可选)+汉字结构(可选)+首笔画(可选)+末笔画(可选)+其他笔画(可选).	
*   省略的部分为空,输入时,声母最好带上,笔画需要按次序输入.
*/
typedef struct
{
	char sm;		//声母
	char ym;		//韵母
	char hz_struct; //汉字结构,分为独体,左右,上下,杂合4中
	char first_bh;	//汉字首笔顺( 横竖撇捺折 中的一种)
	char last_bh;	//汉字末笔顺
	char other_bh[7];//其他笔画,最多9画或者10画.
}py_base_t;//拼音+笔画 基本结构.

typedef enum
{
	PY_SM,  //字符类型为声母
	PY_YM,	//类型为韵母(主要指 a e i o u v)
	PY_BH,	//类型为笔画(或者汉字结构),
	SEPARATOR,//分割付,如 xi'an 中间的单引号,单纯使用笔画输入,前要加分隔符.如(输入法): shu'ru'(左右)+(点)+(点)+(点)+(点)+(横)...
			  //如果不加这个分割符,则解析为ru的笔画部分.
}CHAR_TYPE_E;//输入的字符类型.

typedef struct
{
	char heng;		//表示横用的字符.
	char shu;
	char pie;
	char na;
	char zhe;
	char separator; //分隔符符号,一般设为 单引号
	unsigned char order;	//笔顺输入顺序: 结构+首笔画+末笔画+其他(二进制:00 01 10 11) (即结构为00，首笔画为01 ...)
}py_init_t;//拼音解析前应该初始化好的结构.

int fill_sm_table(void);
int parse_py_string(char * str);

#endif //_PY_H_